package TDD;

/**
 * @author Fagner fjas
 *
 *TESTE - 1
 *	Criar lista de reprodução com nome "Minhas musicas".
 *	Verificar nome da lista de reprodução "Minhas musicas".
 *  Verificar id do usuário da lista = 1
 *  
 *	verificar nome do arquivo que foi criado para salvar informações da lista.
 *		nome do arquivo da lista deverá ser Minhas_musicas-1.txt
 *
 *	Adicionar 2 Objetos música na lista de reprodução
 * 	verificar quantas músicas estão na lista de reprodução
 * 	verificar 1 linha para cada música na lista de reprodução
 *  Recuperar dados das músicas da lista.
 *
 */

import java.io.File;
import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

import cruds.*;
import Itens_listas.Musica;

public class Teste_listas_reproducao {
	private ListaReproducao lista1;
	private Musica Forro;
	private Musica Samba;
	private Musica Funk;
	private File lista_txt;
	
	@Before
	public void CriaLista(){
		Forro = new Musica("Forró da Gente", "Forró no Sítio", "Trio Forro", "2011", "Forro", "Forro_da_gente.mp3");
		Samba = new Musica("Samba_1", "UM", "Sambistas", "2009", "Samba", "Samba_1.mp3");
		Funk = new Musica("Equinha pocotó", "funk", "funqueiros", "2008", "funk", "ate_o_chao.mp3");
		
		try{
			lista1 = new ListaReproducao("Minhas musicas", 20);
		}catch( Exception ex ){
			System.out.println(ex.getMessage());
		}
		lista_txt = new File( System.getProperty("user.dir") + "/arquivos/20/20-minhas_musicas.txt" );
	}
	
	@Test
	public void TestaLista(){
		Assert.assertEquals("Minhas musicas", lista1.getNome());
		Assert.assertEquals( 20 , lista1.getId_usuario());
		Assert.assertTrue("Arquivo e diretório criado", lista_txt.exists());
		Assert.assertTrue("Arquivo ou diretório não foi criado!", lista1.getArquivo().exists() );
		Assert.assertEquals( 0, lista1.getLista().size());
		

	/**
	 * Teste de adição e remoção de músicas da lista de reprodução	
	 */
		try{
			lista1.addMusica(Forro);
			lista1.addMusica(Samba);
			lista1.addMusica(Funk);
			lista1.addMusica(Forro);
			
		}catch (Exception ex){
			System.out.println(ex.getMessage());
		}
		
		Assert.assertEquals( 4, lista1.getLista().size());
		
		try{
			lista1.removeMusica(Forro);
		}catch (Exception ex){
			System.out.println( ex.getMessage() );
		}
		
		/**
		 * Testando a qualificação das músicas
		 */
		Assert.assertEquals( 3, lista1.getLista().size());
		Assert.assertEquals(0, lista1.getMusica("ate_o_chao.mp3").getEtrelas());
		
		lista1.addEstrela( lista1.getMusica("ate_o_chao.mp3"), 4 );
		lista1.addEstrela( lista1.getMusica("Forro_da_gente.mp3"), 2 );
		
		Assert.assertEquals(4, lista1.getMusica("ate_o_chao.mp3").getEtrelas());
		Assert.assertEquals(2, lista1.getMusica("Forro_da_gente.mp3").getEtrelas());
		
		lista1.addEstrela(lista1.getMusica("Forro_da_gente.mp3"), 5) ;
		Assert.assertEquals(5, lista1.getMusica("Forro_da_gente.mp3").getEtrelas());
		
	}
}